using UnityEngine;

public class IS_ScreenBulletCreator_Script : MonoBehaviour
{
    [Header("炮弹预设体")]
    public GameObject bulletPrefab;
    [Header("炮弹飞行速度")]
    public float moveSpeed = 30f;

    // 射线对象
    private Ray ray;
    // 射线碰撞检测器
    private RaycastHit hit;

    /* ========================= Debug.DrawRay与Debug.DrawLine不支持同时发生画线，但不会报错 ======================= */
    // private void Start()
    // {
    //     // 实例化射线
    //     ray = new Ray(Vector3.left, Vector3.right);
    // }
    //
    // private void FixedUpdate()
    // {
    //     // 检测多个
    //     // Physics.RaycastAll(ray.origin, ray.direction);
    //     // 发射射线,并检测到了
    //     if (Physics.Raycast(ray, out hit))
    //     {
    //         Debug.Log(hit.collider);
    //         // 画射线
    //         Debug.DrawRay(ray.origin, ray.direction * 10, Color.red);
    //     }
    // }

    void Update()
    {
        /* ===================================== 屏幕鼠标炮弹发射器 ==================================== */
        // 将鼠标坐标转换为射线
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        // 发射射线, 返回bool-射线是否检测到物体？
        if (Physics.Raycast(ray, out hit))
        {
            // 画线段, 只有在layer界面为 2by3 时可以见到该线段
            Debug.DrawLine(Camera.main.transform.position, hit.point, Color.blue);
            // 按下鼠标左键
            if (Input.GetMouseButtonDown(0))
            {
                // 先生成炮弹
                GameObject bullet = Instantiate(bulletPrefab, Camera.main.transform.position, Quaternion.identity);
                // 让子弹飞
                bullet.GetComponent<Rigidbody>().velocity = (hit.point - Camera.main.transform.position).normalized * moveSpeed;
                // 定时3s销毁炮弹
                Destroy(bullet, 3);
            }
        }
    }
}